package com.zyh.scs.admin.api.bo;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

@Data
// 整体的响应实体类，包含请求处理的基本信息以及具体的返回结果等内容
public class JdAfterSaleR {
    // 成功标记，用于表示请求是否成功处理，true表示成功，false表示失败
    private Boolean success;
    // 错误描述，当请求处理出现错误时，用于记录相应的错误信息
    private String resultMessage;
    // 错误码，用于唯一标识不同类型的错误情况
    private String resultCode;
    // 返回对象，包含具体业务相关的数据信息，如分页信息、服务信息列表等
    private Result result;

    @Data
    // 内部类，用于表示返回对象中的具体信息结构
    public static class Result {
        // 页大小，用于分页查询时表示每页显示的数据条数
        private Integer pageSize;
        // 页码，用于分页查询时表示当前所在的页码
        private Integer pageNo;
        // 总条数，即符合查询条件的所有数据的总数量
        private Integer total;
        // 总页数，根据总条数和页大小计算得出的总共的页面数量
        private Integer pageCount;
        // 服务信息列表，包含多个具体的服务相关的详细信息
        private List<JdAfterSaleService> serviceInfoList;
    }

    @Data
    /**
     * 内部类，用于表示服务信息列表中的每一条具体服务信息
     */
    public static class JdAfterSaleService {
        // 服务号，用于唯一标识某个服务
        private Long afsServiceId;
        // 服务类型，以数字形式表示的服务类型标识
        private Integer customerExpect;
        // 服务类型名称，对应服务类型的具体文字描述
        private String customerExpectName;
        // 申请时间，记录服务申请的具体时间，格式为 2016-01-01 12:45:40，使用Java 8的LocalDateTime类型存储
        private LocalDateTime afsApplyTime;
        // 京东订单号，与该服务相关联的京东平台的订单编号
        private Long orderId;
        // 商品ID，用于唯一标识某个商品
        private Long wareId;
        // 商品名称，该商品的具体名称描述
        private String wareName;
        // 审批步骤，以数字形式表示当前服务所处的审批阶段步骤
        private Integer afsServiceStep;
        // 审批步骤名称，对应审批步骤的具体文字描述
        private String afsServiceStepName;
        // 是否可取消，0表示不可取消，1表示可取消，用于标识该服务是否能被取消
        private Integer cancel;
        // 订单类型，以数字形式表示的订单所属类型标识
        private Integer orderType;
        // 订单类型名称，对应订单类型的具体文字描述
        private String orderTypeName;
        // 商户PIN，商户的唯一标识代码
        private String customerPin;
        // 客户名称，该服务对应的客户的具体名称
        private String customerName;
        // 客户联系方式，用于联系客户的手机号码等信息
        private String customerMobilePhone;
        // 商户等级，用于表示商户在平台中的等级情况
        private String customerGrade;
        // 服务审批过程，以数字形式表示服务审批当前所处的状态
        private Integer afsServiceProcessResult;
        // 服务审批过程名称，对应服务审批过程的具体文字描述
        private String afsServiceProcessResultName;
        // 处理人账号，负责处理该服务的人员的账号信息
        private String processPin;
        // 处理人姓名，负责处理该服务的人员的具体姓名
        private String processName;
        // 服务单状态，以数字形式表示服务单当前所处的整体状态
        private Integer afsServiceStatus;
        // 服务单状态名称，对应服务单状态的具体文字描述
        private String afsServiceStatusName;
        // 审核原因1类，审核该服务时的第一类原因说明
        private String approveResonCid1;
        // 审核原因2类，审核该服务时的第二类原因说明
        private String approveResonCid2;
        // 审批结果，以数字形式表示服务审批最终的结果情况
        private Integer approveResult;
        // 审批结果名称，对应审批结果的具体文字描述
        private String approveResultName;
    }
}